iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0

在昨天我們測試partition key的時候,只要輸入的條件沒有完整包含partition key,就會看到以下的警示。
https://ithelp.ithome.com.tw/upload/images/20200909/20113220WO4ZCnUIlE.png
https://ithelp.ithome.com.tw/upload/images/20200909/20113220tcVfJef5q2.png


這是因為我們沒有正確的指定paritition key,Scylla無法判斷資料究竟位在哪個node的哪個位置,這句查詢就會變成full cluster scan。
Scylla預設是禁止這種查詢方式,如果一定要這樣查詢,就在語法後面加上ALLOW FILTERING字樣。
https://ithelp.ithome.com.tw/upload/images/20200909/20113220wrS740xk8C.png
full cluster scan是非常沒有效率且耗效能的一種查詢,而當cluster是由多個node組成或者是大量的row,效能低落與查詢速度變慢的情形更是顯著。所以在下語法的時候,應該要盡量避免使用ALLOW FILTERING。


另外還有一種情形也會出現一樣的錯誤訊息,這次我們選擇用id當作PK,同時也是partition key。
https://ithelp.ithome.com.tw/upload/images/20200909/20113220p2yUNLjTKI.png
查詢條件除了id再加上時間區間,發現一樣的錯誤警示出現了。
https://ithelp.ithome.com.tw/upload/images/20200909/20113220OwJtv4BpEl.png
這是因為雖然我們可以透過partition key得知資料的存放位置,但是仍然需要用線性掃描來查詢整個partition裡頭的資料。一旦這個partition裡頭存放的row非常多,這樣的查詢也會造成效能低落。


上一篇
Day12 DataModel - Primary Key(中)
下一篇
Day14 DataModel - Primary Key(你以為結束了嗎)
系列文
ScyllaDB實作紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言